In Scala, flatMap() method is identical to the map() method, but the only
difference is that in flatMap the inner grouping of an item is removed
and a sequence is generated. It can be defined as a blend of map method
and flatten method. The output obtained by running the map method
followed by the flatten method is same as obtained by the flatMap(). So,
we can say that flatMap first runs the map method and then the flatten
method to generate the desired result.
Let’s see an example to illustrate, how the flatMap is working.
![](data:image/png;base64,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)
So,
we can see here that the output obtained in both the cases is same
therefore, we can say that flatMap is a combination of map and flatten
method.
object Demo
{
def main(args:Array[String])
{
val days = Seq("sunday", "Monday", "Tuesday")
val result = days .flatMap(_.toUpperCase)
println(result)
}
}
Here, flatMap is applied to the stated sequence so, a list of sequence of characters is generated.
object flatmap
{
def main(args:Array[String])
{
val list = List(2, 3, 4)
def func(x:Int) = List(x-1, x, x+1)
val result = list.flatMap(y => func(y))
println(result)
}
}
List(1, 2, 3, 2, 3, 4, 3, 4, 5)
Here, flatMap is applied on the another function defined in the program and so a list of sequence of numbers is generated. Let’s see how the output is computed.
List(List(2-1, 2, 2+1), List(3-1, 3, 3+1), List(4-1, 4, 4+1))
List(List(1, 2, 3), List(2, 3, 4), List(3, 4, 5))
So, first step works like applying map method on the another function stated.
List(1, 2, 3, 2, 3, 4, 3, 4, 5)
The second step works like applying flatten to the output obtained by the map method at the first step.
object demo
{
def main(args:Array[String])
{
val seq = Seq(4, 5, 6, 7)
val result = seq flatMap { s =>
Seq(s, s-1)
}
println(result)
}
}
Output:
List(4, 3, 5, 4, 6, 5, 7, 6)
Here, also output is obtained like the first example of the flatMap with another functions.
Utilizing flatMap on if-else statements.
object Demo
{
def main(args:Array[String])
{
val seq = Seq(8, 15, 22, 23, 24)
val result = seq flatMap { s =>
if (s % 3 == 0) Seq(s)
else Seq(-s)
}
println(result)
}
}
To Find the average usong flatMap
val inputrdd = sc.parallelize(Seq(("maths", 50), ("maths", 60), ("english", 65)))
val mapped = inputrdd.mapValues(mark => (mark, 1));
val reduced = mapped.reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))
val average = reduced.map { x =>
val temp = x._2
val total = temp._1
val count = temp._2
(x._1, total / count)
}
average.collect
Let’s see an example to illustrate, how the flatMap is working.
object demo
{
def main(args :Array[String])
{
val list = List("Sunday","Monday","Thursday")
val result = list.flatMap(x => x)
println(result)
}
}
{
def main(args :Array[String])
{
val list = List("Sunday","Monday","Thursday")
val result = list.flatMap(x => x)
println(result)
}
}
map | flatMap |
object demo { def main(args :Array[String]) { val list = List("Sunday","Monday","Thursday") var result=list.map(_.toLowerCase).flatten println(result) } } | object demo { def main(args :Array[String]) { val list = List("Sunday","Monday","Thursday") var result=list.flatMap(_.toLowerCase) println(result) } } |
List(s, u, n, d, a, y, m, o, n, d, a, y, t, h, u, r, s, d, a, y) | List(s, u, n, d, a, y, m, o, n, d, a, y, t, h, u, r, s, d, a, y) |
object Demo
{
def main(args:Array[String])
{
val days = Seq("sunday", "Monday", "Tuesday")
val result = days .flatMap(_.toUpperCase)
println(result)
}
}
Here, flatMap is applied to the stated sequence so, a list of sequence of characters is generated.
object flatmap
{
def main(args:Array[String])
{
val list = List(2, 3, 4)
def func(x:Int) = List(x-1, x, x+1)
val result = list.flatMap(y => func(y))
println(result)
}
}
List(1, 2, 3, 2, 3, 4, 3, 4, 5)
Here, flatMap is applied on the another function defined in the program and so a list of sequence of numbers is generated. Let’s see how the output is computed.
List(List(2-1, 2, 2+1), List(3-1, 3, 3+1), List(4-1, 4, 4+1))
List(List(1, 2, 3), List(2, 3, 4), List(3, 4, 5))
So, first step works like applying map method on the another function stated.
List(1, 2, 3, 2, 3, 4, 3, 4, 5)
The second step works like applying flatten to the output obtained by the map method at the first step.
object demo
{
def main(args:Array[String])
{
val seq = Seq(4, 5, 6, 7)
val result = seq flatMap { s =>
Seq(s, s-1)
}
println(result)
}
}
Output:
List(4, 3, 5, 4, 6, 5, 7, 6)
Here, also output is obtained like the first example of the flatMap with another functions.
Utilizing flatMap on if-else statements.
object Demo
{
def main(args:Array[String])
{
val seq = Seq(8, 15, 22, 23, 24)
val result = seq flatMap { s =>
if (s % 3 == 0) Seq(s)
else Seq(-s)
}
println(result)
}
}
To Find the average usong flatMap
val inputrdd = sc.parallelize(Seq(("maths", 50), ("maths", 60), ("english", 65)))
val mapped = inputrdd.mapValues(mark => (mark, 1));
val reduced = mapped.reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2))
val average = reduced.map { x =>
val temp = x._2
val total = temp._1
val count = temp._2
(x._1, total / count)
}
average.collect
flatten
flatten collapses one level of nested structure.
object Demo {
def main(args: Array[String]){
val myList = List(List(1,2), List(3))
println(myList.flatten)
}
flatten collapses one level of nested structure.
object Demo {
def main(args: Array[String]){
val myList = List(List(1,2), List(3))
println(myList.flatten)
}
No comments:
Post a Comment